| r6 | ||
|---|---|---|
| r1 (새 문서) | 1 | [목차] |
| 2 | == 개요 == | |
| 3 | 리눅스 명령어를 정리한 리스트 문서이다. | |
| r2 | 4 | |
| 5 | == 디렉토리/파일 관련 == | |
| 6 | ||
| 7 | === ls === | |
| 8 | ls는 list의 약자로, 특정 디렉토리 내의 내용을 출력해주는 역할을 한다. | |
| 9 | ||
| 10 | || 옵션 || 전체 || 설명 || | |
| 11 | || -l || || 각 파일/디렉토리에 대한 상세한 설명을 테이블 형태로 출력한다. || | |
| 12 | || -a || --all || 숨김 파일 또는 숨김 디렉토리[* {{{.}}}으로 시작하는 이름]를 표시한다.[br]단, {{{.}}}[* 현재 디렉토리]나 {{{..}}}[* 부모 디렉토리]도 같이 표시되는 단점이 있다. || | |
| 13 | || -1 || || 파일이나 디렉토리를 한 줄에 하나씩 출력한다. || | |
| 14 | || -t || || 수정일 순으로 출력한다. || | |
| 15 | ||
| 16 | ====# 결과 예시 #==== | |
| 17 | {{{# ls -al | |
| 18 | total 68 | |
| 19 | dr-xr-xr-x. 17 root root 262 Jan 16 15:22 . | |
| 20 | dr-xr-xr-x. 17 root root 262 Jan 16 15:22 .. | |
| 21 | -rw-r--r-- 1 root root 0 Jan 8 14:30 .autorelabel | |
| 22 | lrwxrwxrwx. 1 root root 7 Jan 8 14:10 bin -> usr/bin | |
| 23 | dr-xr-xr-x. 5 root root 4096 Jan 8 14:14 boot | |
| 24 | drwxr-xr-x 18 root root 3240 Jan 16 15:21 dev | |
| 25 | drwxr-xr-x. 73 root root 8192 Jan 16 15:21 etc | |
| 26 | drwxr-xr-x. 3 root root 34 Jan 8 14:38 home | |
| 27 | ...}}} | |
| 28 | ||
| r4 | 29 | === cat === |
| 30 | 파일의 내용을 터미널 창에 출력할 때 사용하는 명령어입니다. | |
| 31 | > cat file1 | |
| 32 | ||
| 33 | ====# 결과 예시 #==== | |
| 34 | {{{# cat file1 | |
| 35 | test123#### | |
| 36 | test3641@#!! | |
| 37 | tteesstt}}} | |
| 38 | ||
| 39 | =====# {{{#f00 사용 시 주의 사항}}} #===== | |
| 40 | 서버 점검 중 수 기가바이트(GB)가 넘는 대용량 로그 파일을 cat으로 열면 터미널이 멈추거나 시스템 성능이 저하될 수 있습니다. | |
| 41 | ||
| 42 | more 를 사용해 한 페이지씩 확인 할 수 있도록 하자 | |
| 43 | > cat file1 | more | |
| 44 | ||
| 45 | ||
| r2 | 46 | == 정보 표시관련 == |
| 47 | ||
| 48 | === ifconfig === | |
| 49 | Interface Configuration의 약자로, 리눅스나 유닉스 계열 운영체제에서 네트워크 인터페이스의 설정 상태를 확인하거나 변경할 때 사용하는 가장 기본적인 명령줄 도구입니다. | |
| 50 | ||
| 51 | IP 주소 확인, MAC 주소 확인, 인터페이스 확인 | |
| 52 | > ifconfig | |
| 53 | ||
| 54 | || -a || 활성화되지 않은 인터페이스를 포함하여 모든 정보를 표시합니다. || ifconfig -a || | |
| 55 | || [인터페이스] up/down || 특정 네트워크 인터페이스를 활성화/비활성화 합니다. || ifconfig eth0 up [br] ifconfig eth0 down || | |
| 56 | || [인터페이스] || 특정 네트워크 인터페이스 만 조회 할 수 있습니다. || ifconfig eth0 || | |
| 57 | ||
| 58 | ====# 결과 예시 #==== | |
| 59 | {{{eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 | |
| 60 | inet 192.168.0.15 netmask 255.255.255.0 broadcast 192.168.0.255 | |
| 61 | ether 00:0c:29:ab:cd:ef txqueuelen 1000 (Ethernet) | |
| 62 | RX packets 12345 bytes 10485760 (10.0 MiB) | |
| 63 | TX packets 6789 bytes 5242880 (5.0 MiB)}}} | |
| 64 | '''eth0''' : 네트워크 인터페이스의 이름입니다. (요즘은 ens33, eno1 등으로 나오기도 하고 Bond 설정 시 bond0, bond1등으로 나온다.) | |
| 65 | '''inet''' : 현재 할당된 IPv4 주소입니다. | |
| 66 | '''netmask''' : 네트워크의 범위를 결정하는 서브넷 마스크입니다. | |
| 67 | '''ether''' : 랜카드의 물리적 주소인 MAC 주소입니다. | |
| 68 | '''RX/TX''' packets : 수신(Receive) 및 송신(Transmit)된 데이터 통계입니다. 여기서 에러(errors) 숫자가 높다면 네트워크 선이나 장비 결함을 의심해볼 수 있습니다. | |
| 69 | ||
| 70 | =====# 발생할 수 있는 Error또는 Drop #===== | |
| 71 | {{{RX packets 5021 bytes 625410 (610.7 KiB) | |
| 72 | RX errors 154 dropped 892 overruns 12 frame 154 | |
| 73 | TX packets 900 bytes 85000 (83.0 KiB) | |
| 74 | TX errors 45 dropped 0 overruns 0 carrier 45 collisions 20}}} | |
| r3 | 75 | '''RX Errors''' : 외부 물리장비나 서버 리소스 부족 시 발생 (랜 케이블 노후, 스위치 포트 고장) |
| r2 | 76 | '''RX Drop''' : OS 방화벽 차단, 메모리/버퍼 부족 |
| 77 | '''TX Errors/Drop''' : 서버에서 데이터를 내보낼 때 발생하는 문제 (스위치 설정 불일치 또는 네트워크 전송 경로 물리적 장애) | |
| 78 | '''Overruns''' : 데이터가 쏟아지는 속도를 하드웨어나 커널이 못 따라갈 때 (고대역폭 데이터 급증 또는 커널 네이트워크 큐 사이즈 작음) | |
| 79 | ||
| 80 | === route === | |
| 81 | 내 서버에서 나가는 데이터가 어느 길(Gateway)을 거쳐 가는지 확인하는 지도입니다. | |
| 82 | ||
| 83 | *관련 옵션* | |
| 84 | > 주소를 이름 대신 IP로 보여줌 [br] route -n | |
| 85 | ||
| 86 | > 좀 더 상세하게 출력 됨 [br] route -v | |
| 87 | ||
| 88 | > 라우팅 관련 추가/삭제 설정 시 사용한다. [br] # route add [br] # route del | |
| 89 | ||
| 90 | ====# 결과 예시 #==== | |
| 91 | {{{# route -n | |
| 92 | Kernel IP routing table | |
| 93 | Destination Gateway Genmask Flags Metric Ref Use Iface | |
| 94 | 0.0.0.0 192.168.0.1 0.0.0.0 UG 100 0 0 eth0 | |
| 95 | 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0 | |
| 96 | 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0}}} | |
| 97 | ||
| 98 | '''Destination 0.0.0.0''' : 외부 인터넷으로 나가는 모든 경로 (기본 통로) | |
| 99 | '''Gateway''' : 우리 집 '대문' 역할을 하는 장비 주소 (공유기나 라우터 IP) | |
| 100 | '''Iface''' : 데이터가 실제로 나가는 랜카드 이름 (예: eth0) | |
| 101 | ||
| 102 | === ntpd === | |
| 103 | 서버의 시간이 표준 시간과 얼마나 잘 맞고 있는지, 어떤 외부 시간 서버로부터 정보를 받아오고 있는지 상태를 조회하는 명령어입니다. | |
| 104 | > ntpq -p | |
| 105 | ||
| 106 | ||
| 107 | ====# 결과 예시 #==== | |
| 108 | {{{remote refid st t when poll reach delay offset jitter | |
| 109 | ============================================================================== | |
| 110 | *time.google.com .GOOG. 1 u 156 128 377 2.105 -0.015 0.032 | |
| 111 | +time.bora.net 204.123.2.5 2 u 89 128 377 15.420 1.520 0.110}}} | |
| 112 | ||
| 113 | =====# 발생 할 수 있는 에러/오류 #===== | |
| 114 | ntpq: read: Connection refused | |
| 115 | 원인: 내 서버에서 ntpd(NTP 서비스)가 실행 중이지 않을 때 발생합니다. | |
| 116 | 조치: systemctl start ntpd | |
| 117 | ||
| 118 | remote 항목 앞에 아무 기호(*, +)가 없을 때 | |
| 119 | 원인: 시간 서버와 연결은 되지만 패킷을 주고받는 데 문제가 있거나, 이제 막 서비스를 시작해서 동기화할 시간이 더 필요한 경우입니다. | |
| 120 | 조치: 5~10분 정도 기다려보고, 계속 그대로라면 ntp(ntp.conf) 설정 파일 확인, 파일도 이상이 없다면 route 정보 확인이 필요하다. | |
| 121 | ||
| 122 | === ping === | |
| r5 | 123 | 특정 장비(서버, PC 등)가 현재 살아있는지, 그리고 나와의 통신 속도는 어느 정도인지 확인하는 네트워크 진단 도구입니다. |
| r2 | 124 | > ping 8.8.8.8 |
| 125 | ||
| 126 | || 옵션 || 전체 || 설명 || | |
| 127 | || -c [횟수] || 지정한 횟수만큼만 패킷을 전송하고 종료합니다. || ping -c 4 8.8.8.8 || | |
| 128 | || -I [인터페이스명|IP] || 패킷을 보낼 인터페이스 또는 출발지 IP 주소를 지정합니다. || ping -I eth0 8.8.8.8 || | |
| 129 | ||
| 130 | ====# 결과 예시 #==== | |
| 131 | {{{PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data. | |
| 132 | 64 bytes from 8.8.8.8: icmp_seq=1 ttl=115 time=32.5 ms | |
| 133 | 64 bytes from 8.8.8.8: icmp_seq=2 ttl=115 time=31.2 ms | |
| 134 | 64 bytes from 8.8.8.8: icmp_seq=3 ttl=115 time=30.8 ms | |
| 135 | ||
| 136 | --- 8.8.8.8 ping statistics --- | |
| 137 | 3 packets transmitted, 3 received, 0% packet loss, time 2003ms | |
| 138 | rtt min/avg/max/mdev = 30.812/31.503/32.511/0.732 ms}}} | |
| 139 | ||
| 140 | =====# 발생 할 수 있는 에러/오류 #===== | |
| 141 | Destination Host Unreachable | |
| 142 | 의미 : 상대방에게 가는 길을 아예 못 찾을 때 발생합니다. | |
| 143 | 원인 : 내 컴퓨터의 게이트웨이(route) 설정이 틀렸거나, 상대방 주소가 잘못된 경우. | |
| 144 | 조치1 : 내 IP가 정상 할당 되었는지 확인 | |
| 145 | 조치2 : route -n 명령어로 Default Gateway(0.0.0.0)가 올바르게 설정되어 있는지 확인합니다. | |
| 146 | 조치3 : 랜 케이블이 제대로 꽂혀 있는지, 스위치 허브의 포트에 불이 들어와 있는지 확인합니다. | |
| 147 | ||
| 148 | Request Timeout (타임아웃) | |
| 149 | 의미 : 신호는 보냈으나 대답이 없을 때 발생합니다. | |
| 150 | 원인 : 상대방 서버가 꺼져 있거나, 상대방의 **방화벽(Firewall)**이 핑 신호(ICMP)를 차단하고 있는 경우입니다. | |
| 151 | 조치1 : 상대방 서버의 방화벽(iptables 등)에서 ICMP(Ping) 응답이 차단되어 있는지 확인하고 허용합니다. | |
| 152 | 조치2 : 상대방 서버가 실제로 켜져 있는지(Power On) 확인합니다. | |
| 153 | ||
| 154 | Unknown Host | |
| 155 | 의미 : 입력한 도메인 주소(예: naver.com)를 찾을 수 없을 때 발생합니다. | |
| 156 | 원인 : DNS 설정이 잘못되어 주소를 IP로 변환하지 못하는 상태입니다. | |
| 157 | 조치1 : /etc/resolv.conf 파일(Linux)에서 DNS 서버 주소(예: 8.8.8.8)가 맞게 등록되어 있는지 확인합니다. | |
| 158 | 조치2 : /etc/hosts 파일에 엉뚱한 IP 주소가 강제로 고정되어 있는지 확인합니다. | |
| 159 | ||
| r5 | 160 | === netstat === |
| 161 | 서버의 네트워크 연결 상태, 라우팅 테이블, 인터페이스 통계 등을 보여주는 강력한 네트워크 진단 도구입니다. | |
| 162 | > netstat | |
| 163 | ||
| 164 | || 옵션 || 전체 || 설명 || | |
| 165 | || -a || 모든 소켓(연결 및 대기)을 표시합니다. || `netstat -a` || | |
| 166 | || -n || 주소와 포트 번호를 이름 대신 숫자로 표시합니다. || `netstat -an` || | |
| 167 | || -p || 해당 포트를 사용하는 프로그램 이름과 PID를 표시합니다. || `netstat -ap` || | |
| 168 | || -t || TCP 프로토콜만 표시합니다. || `netstat -at` || | |
| 169 | || -l || 연결 대기 중인(Listen) 포트만 표시합니다. || `netstat -nl` || | |
| 170 | ||
| 171 | ====# 결과 예시 #==== | |
| 172 | {{{tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/nginx: master | |
| 173 | tcp6 0 0 :::80 :::* LISTEN 1234/nginx: master}}} | |
| 174 | ||
| 175 | ||
| r2 | 176 | === df === |
| 177 | 마운트된 디스크 사용량을 출력한다. HP-UX의 경우 df와 bdf가 구분되어 있으며, bdf가 우리가 현재 알고있는 df의 형식을 출력한다. | |
| 178 | > df [옵션] [파일] | |
| 179 | || 옵션 || 설명 || | |
| 180 | || -i, --inodes || i-node 사용량을 대신 표시한다. || | |
| 181 | || -h, --human-readable || 읽기 쉽도록 1,024를 [[거듭제곱]]한 단위를 사용한다. (예시: 1023M)|| | |
| 182 | ||
| 183 | ====# 결과 예시 #==== | |
| 184 | {{{# df -h | |
| 185 | Filesystem Size Used Avail Use% Mounted on | |
| 186 | devtmpfs 5.8G 0 5.8G 0% /dev | |
| 187 | tmpfs 5.9G 0 5.9G 0% /dev/shm | |
| 188 | tmpfs 5.9G 8.9M 5.8G 1% /run | |
| 189 | tmpfs 5.9G 0 5.9G 0% /sys/fs/cgroup | |
| 190 | /dev/nvme0n1p4 50G 1.5G 49G 3% / | |
| 191 | /dev/nvme0n1p2 1014M 125M 890M 13% /boot | |
| 192 | /dev/nvme0n1p1 200M 12M 189M 6% /boot/efi | |
| 193 | /dev/nvme0n1p5 182G 105M 182G 1% /home | |
| 194 | tmpfs 1.2G 0 1.2G 0% /run/user/1000}}} | |
| 195 | ||
| r5 | 196 | |
| 197 | === ps === | |
| 198 | 현재 시스템에서 실행 중인 프로세스의 목록과 상태를 확인하는 명령어입니다. | |
| 199 | > ps | |
| 200 | || 옵션 || 설명 || | |
| 201 | || -e || 시스템의 모든 프로세스를 표시합니다. || ps -e || | |
| 202 | || -f || 상세한 정보를 포함하는 풀 포맷으로 표시합니다. || ps -ef || | |
| 203 | ||
| 204 | ====# 결과 예시 #==== | |
| 205 | {{{# ps -ef | |
| 206 | UID PID PPID C STIME TTY TIME CMD | |
| 207 | root 1 0 0 Jan20 ? 00:00:05 /usr/lib/systemd/systemd | |
| 208 | root 1234 1 0 10:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND | |
| 209 | apache 1235 1234 0 10:30 ? 00:00:02 /usr/sbin/httpd -DFOREGROUND | |
| 210 | root 3052 3010 0 14:20 pts/0 00:00:00 ps -ef | |
| 211 | ...}}} | |
| 212 | ||
| 213 | ||
| 214 | ||
| 215 | ||
| 216 |